package com.xyoto.community.service;

import com.xyoto.community.dto.PageDTO;
import com.xyoto.community.utils.PageUtils;
import io.swagger.annotations.ApiModel;

import java.util.List;

/**
 * @author coderFu
 * @create 2021/12/2
 */
@ApiModel("话题全部动态缓存处理接口类")
public interface TopicAllDynamicCacheService {

    /**
     * 新增话题下的动态列表数据
     * @param topicId 话题id
     * @param dynamicId 动态id
     * @param timestamp 时间戳
     */
    void saveNewTopicDynamic(Integer topicId, Integer dynamicId, long timestamp);

    /**
     * 根据话题id和动态id删除话题下的全部动态
     * @param topicId
     * @param dynamicId
     */
    void deleteTopicAllDynamicForMakePersonal(Integer topicId,Integer dynamicId);

    /**
     * 根据话题id、动态id和创建的时间戳来恢复话题下的全部动态列表
     * @param topicId
     * @param dynamicId
     * @param timestamp
     */
    void recoverTopicAllDynamic(Integer topicId, Integer dynamicId, long timestamp);

    /**
     * 根据话题id， 分页参数 获取最新的动态列表以及封装分页信息
     * @param topicId
     * @param pageDTO
     * @return
     */
    PageUtils<Integer> getTopicAllDynamicIdListFromCache(Integer topicId, PageDTO pageDTO);

    /**
     * 根据话题id, 动态id删除动态在缓存中的索引信息
     * @param topicId
     * @param dynamicId
     */
    void deleteTopicAllDynamicById(Integer topicId, Integer dynamicId);

    /**
     * 根据话题动态缓存列表 key 以及分页信息获取动态id集合
     * @param key
     * @param pageDTO
     * @return
     */
    List<Integer> getTopicDynamicIdsFromCache(String key, PageDTO pageDTO);


}
